package cn.smbms.dao.user;

import java.util.Date;
import java.util.List;
import java.util.Map;

import cn.smbms.pojo.Bill;
import cn.smbms.pojo.Provider;
import cn.smbms.pojo.Role;
import cn.smbms.pojo.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
	/**
	 * 查询用户列表
	 * @return
	 */
	public List<User> getUserList();

	/**
	 * 查询用户列表（参数:对象入参）
	 * @param user
	 * @return
	 */
	public List<User> getUserList(User user);

	public List<User> getUserListByMap(Map<String,String> userMap);

	public List<User> getUserListEight(User user);

	public int add(User user);

	public int modify(User user);

	public int updatePwd(@Param("id")Integer id,@Param("userPassword")String pwd);

	public int deleteUserById(@Param("id") Integer delId);

	public List<User> getUserListByRoleId(@Param("userRole")Integer roleid);

	public List<User> userRoleResultTow(@Param("userRole")Integer roleid);

	public List<User> getAddressListByUserId(@Param("id")Integer userId);

	public User getAddressListByUserIdTow(@Param("id")Integer userId);

	public List<Bill> getBillList(Bill bill);

	public List<Bill> getBillMap(Map<String,String> map);

	public int insertProvider(Provider provider);

	public int updateProvider(Provider provider);

	public int deleteProvider(@Param("id")Integer id);

	//第二章上机三
	public Bill getBillProductNamePidIsPayment(Bill bill);
	//第二章上机四
	public List<Bill> gitBillProductIdListTow(Bill bill);

	//第二章简答4插入
	public int getAddRole(Role role);

	//第二章简答4修改测试
	public int getUpdateRole(Role role);

	//第二章简答4模糊查询
	public List<Role> getLikeRoleName(@Param("r")String roleName);

	//第二章简答4删除
	public int getUserBoleId(@Param("id")Integer id);
	public int deleteUserId(@Param("id")Integer id);
	int deleteRoleId(@Param("id")Integer id);

	//第四章示例一
	public List<User> getUserListThree(@Param("userName")String userName,@Param("userRole")Integer roleId);

	public int modifyForu(User user);

	//第三章示例9
	public List<User> getUserByRoleId_foreach_array(Integer[] roleIds);

	//第三章示例12根据用户角色列表，获取该角色列表下用户列表信息
	public List<User> getUserByRolleId_foreach_list(List<Integer> roleList);

	//第三章示例14根据用户角色列表和性别，获取该角色列表下指定性别的用户列表信息
	public List<User> getUserByConditionMap_foreach_map(Map<String,Object> conditionMap);

	//第三章示例16根据用户角色列表，获取该角色列表下用户列表信息
	public List<User> getUserByRoleId_foreach_map(Map<String,Object> roleMap);

	//第三章示例18查询用户列表
	public List<User> getUserList_choose(@Param("userName")String username, @Param("userRole")Integer roleId
										, @Param("userCode")String userCode, @Param("creationDate")Date creationDate);

	//查询用户列表
	public List<User> getUserListFour(@Param("userName")String userName,@Param("userRole")Integer roleId
										,@Param("from")Integer currentPagNo,@Param("pageSize")Integer pageSize);
}